<?php

class moduleModel extends CDBModelBase
{
	
	public function getTabelName(){
		return "tbl_base_module";
	}

	public function getPKID(){
		return "module_id";
	}
	
	protected function getSequence()
	{
		return "MODULE_SEQUENCE";
	}

	/**
	 * 插入
	 * @param array $p
	 */
	public function add($p=array())
	{
		$p["sort_num"] = $this->getMaxSortNum($p["module_group_id"]);
		return $this->insert($p);
	}
	
	/**
	 * 获取模块最大的排序数
	 * @param int $module_group_id 模块所在组
	 */
	private function getMaxSortNum($module_group_id)
	{
		$params = array(array(":module_group_id", $module_group_id,PDO::PARAM_INT));
		$sql = "SELECT MAX(sort_num) FROM tbl_base_module where module_group_id=:module_group_id";
			
		$sort_num = $this->db->executeScalar($sql, $params);
		
		if($sort_num===false){
			$sort_num = 0;
		}
		else {
			$sort_num++;
		}
		
		return $sort_num;
	}
	
	/**
	 * 更新
	 * @param array $p	
	 */
	public function update($p=array())
	{
		if($p["is_change"]==1)
		{
			$p["sort_num"] = $this->getMaxSortNum($p["module_group_id"]);
		}
		
		unset($p["is_change"]);
		
		return $this->updateByPkId($p);
	} 
	
	
	/**
	 * 删除一组
	 * @param int $module_group_id
	 */
	public function deleteByGroup($moduleGroupId)
	{
		$params = array(array(":module_group_id",$moduleGroupId,PDO::PARAM_INT));
		return $this->db->executeNonQuery("UPDATE tbl_base_module SET del_flag=1
			WHERE module_group_id = :module_group_id",$params);
	}
	
	/**
	 * 查询
	 * @param int $module_id
	 */
	public function select($moduleId)
	{
		//$params = array(array($moduleId,PDO::PARAM_INT));
		return $this->selectById($moduleId,"del_flag=0");
	}
	
	/**
	 * 查询出所有
	 */
	public function selectAll()
	{
		return $this->db->executeDataSet("SELECT * FROM tbl_base_module WHERE del_flag = 0 ORDER BY sort_num ASC");
	}
	
	/**
	 * 排序
	 */
	public function move($p=array())
	{
		/* $params = array(array($p["is_up"],PDO::PARAM_INT),
		        array($p["group_id"],PDO::PARAM_INT),
				array($p["module_id"],PDO::PARAM_INT),
				array($p["move_num"],PDO::PARAM_INT),
				array($p["sort"],PDO::PARAM_INT));
		return $this->proc->executeNonQuery("proc_base_module_sort",$params); */
	}
}
